package tui

import (
	"fmt"
	"os"

	"anders-cli/pkg/logger"

	tea "github.com/charmbracelet/bubbletea"
)

// Start 启动TUI界面
func Start() error {
	logger.Info("启动 Anders-CLI TUI 界面")

	// 创建模型
	model := NewModel()

	// 创建程序
	p := tea.NewProgram(model, tea.WithAltScreen())

	// 运行程序
	if _, err := p.Run(); err != nil {
		logger.Error("TUI 程序运行失败: %v", err)
		return fmt.Errorf("TUI 程序运行失败: %v", err)
	}

	logger.Info("TUI 界面已关闭")
	return nil
}

// StartWithModel 使用指定模型启动TUI（用于测试）
func StartWithModel(model *Model) error {
	p := tea.NewProgram(model)
	if _, err := p.Run(); err != nil {
		return err
	}
	return nil
}

// GetDefaultModel 获取默认模型（用于测试）
func GetDefaultModel() *Model {
	return NewModel()
}

// ValidateTerminal 检查终端是否支持所需功能
func ValidateTerminal() error {
	// 检查是否在支持的终端中运行
	if os.Getenv("TERM") == "dumb" {
		return fmt.Errorf("不支持的终端类型，请使用支持 ANSI 转义序列的终端")
	}

	// 检查终端大小
	// 这里可以添加更多终端验证逻辑

	return nil
}

// GetTerminalSize 获取终端大小
func GetTerminalSize() (width, height int, err error) {
	return 80, 24, nil // 默认值，实际会在运行时通过 WindowSizeMsg 更新
}
